package apjava.basico;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.Socket;

public class ClienteModel implements Serializable {
    
    private static final long serialVersionUID = 1;
    
    private static final int portaPadraoEscuta = 5000;
    private String login;
    private String ip;
    private int portaEnvioVideo;
    private transient Socket conexaoCliente;
    private int portaRecebeVideo;

    private transient ObjectInputStream streamLeitura;
    
    private transient ObjectOutputStream streamEscrita;
    
    public ClienteModel() {
    }

    public static int getPortaPadraoEscuta() {
        return portaPadraoEscuta;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public int getPortaEnvioVideo() {
        return portaEnvioVideo;
    }

    public void setPortaEnvioVideo(int portaEnvioVideo) {
        this.portaEnvioVideo = portaEnvioVideo;
    }

    public Socket getConexaoCliente() {
        return conexaoCliente;
    }

    public void setConexaoCliente(Socket conexaoCliente) {
        streamLeitura = null;
        streamEscrita = null;
        this.conexaoCliente = conexaoCliente;
    }
    
    public String toString() {
        return this.ip;
    }

    public int getPortaRecebeVideo() {
        return portaRecebeVideo;
    }

    public void setPortaRecebeVideo(int portaRecebeVideo) {
        this.portaRecebeVideo = portaRecebeVideo;
    }
    
    public ObjectInputStream getStreamLeitura() {
        if(streamLeitura==null){
            try {
                this.streamLeitura = new ObjectInputStream(conexaoCliente.getInputStream());
            } catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("Erro ao tentar criar o canal de leitura com o cliente!");
            }
        }
        return streamLeitura;
    }
    
    public ObjectOutputStream getStreamEscrita() {
        if(streamEscrita==null){
            try {
                this.streamEscrita = new ObjectOutputStream(conexaoCliente.getOutputStream());
            } catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("Erro ao tentar criar os canal de escrita com o cliente!");
            }
        }
        return streamEscrita;
    }
    
}
